package com.gitee.mocoffee.flow;

import java.util.concurrent.ConcurrentMap;

/**
 * 处理器
 * <p/>
 * 处理器有正向处理和逆向处理
 * <p/>
 * 该接口的实现应尽量自主处理业务的异常情况
 *
 * @author lijia
 */
public interface Processor<INPUT> {
    /**
     * 正向处理
     *
     * @param input
     * @param context
     * @return 业务是否处理成功
     */
    boolean process(INPUT input, ConcurrentMap<String, Object> context);

    /**
     * 逆向处理
     *
     * @param input
     * @param context
     */
    void rollback(INPUT input, ConcurrentMap<String, Object> context);
}

